﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;

namespace Sige
{
    class Funciones_Varias
    {

        //esta función verifica si hay algún textbox sin completar en el formulario,
        //de no ser así devuelve True (a menos que sea algún campo donde se
        //admita valor Null):
        public bool todosCompletos(AltaPersonas formap)
        {
            foreach (Control c in formap.Controls)
            {
                if ((c is TextBox) && (c.Text == "") &&
                    (c != ((TextBox)formap.Controls["txtEmail"])) && 
                    (c != ((TextBox)formap.Controls["txtMostrarNivelEst"])))
                    return false;
            }
            return true;
        }

        public Control primerControlEnBlanco(Form formulario)
        {
            foreach (Control c in formulario.Controls)
            {
                if (c.Text == "")
                    return c;
            }
            return null;
        }

        public void Carga_Combos(ref ComboBox cbo, DataTable dt, string col_mostrar, string col_oculta)
        {
            cbo.DataSource = dt;
            cbo.DisplayMember = col_mostrar;
            cbo.ValueMember = col_oculta;
        }

        public bool Validar_Todo(Form ap, ref DateTime fechavalida)
        {
            foreach (Control c in ap.Controls)
            {
                if ((c is TextBox) && (c != (TextBox)ap.Controls["txtEmail"]) && 
                    (c != (TextBox)ap.Controls["txtMostrarTipoDocum"]) &&
                    (c != (TextBox)ap.Controls["txtMostrarNacionalidad"]) && 
                    (c != (TextBox)ap.Controls["txtMostrarNivelEst"]))
                {
                    if (validar_Campo_Vacio(c) == false) return false;
                }
            }
            if (((ComboBox)ap.Controls["cboCodTipoDocumento"]).Text != "PS")
            {
                if (validar_Campo_Numerico((TextBox)ap.Controls["txtNroDocumento"]) == false) return false;
            }
            if (validar_Campo_Texto((TextBox)ap.Controls["txtNombre"]) == false) return false;
            if (validar_Campo_Texto((TextBox)ap.Controls["txtApellido"]) == false) return false;
            if (validar_Campo_Numerico((TextBox)ap.Controls["txtTelefono"]) == false) return false;
            if (validar_Campo_Numerico((TextBox)ap.Controls["txtDiaNacim"]) == false) return false;
            if (validar_Campo_Numerico((TextBox)ap.Controls["txtMesNacim"]) == false) return false;
            if (validar_Campo_Numerico((TextBox)ap.Controls["txtAnioNacim"]) == false) return false;
            if (validar_Fecha(ref fechavalida, (TextBox)ap.Controls["txtDiaNacim"], (TextBox)ap.Controls["txtMesNacim"], (TextBox)ap.Controls["txtAnioNacim"]) == false) return false;
            return true;
        }

        public bool validar_Campo_Numerico(Control txt)
        {
            bool hayLetras = false;
            foreach (char c in txt.Text)
            {
                if ((c < 48 || c > 57) && (c != ' '))
                {
                    hayLetras = true;
                }
            }
            if (hayLetras == true)
            {
                MessageBox.Show("El campo " + txt.Name.ToString() + " debe ser numérico", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txt.Text = "";
                txt.Focus();
            }
            return !hayLetras;
        }

        public bool validar_Campo_Texto(TextBox txt)
        {
            bool haySimbolos = false;
            foreach (char c in txt.Text)
            {
                if (((c >= 0 && c < 65) || (c > 90 && c < 97) || (c > 122)) &&
                    (c != ' '))
                {
                    haySimbolos = true;
                }
            }
            if (haySimbolos == true)
            {
                MessageBox.Show("El campo " + txt.Name.ToString() + " sólo puede contener letras", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txt.Clear();
                txt.Focus();
            }
            return !haySimbolos;
        }

        public bool validar_Campo_Vacio(Control txt)
        {
            bool esVacio = true;
            if (txt.Text.Trim().Length == 0)
            {
                MessageBox.Show("El campo " + txt.Name.ToString() + " no puede quedar vacío", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txt.Focus();
            }
            else esVacio = false;
            return !esVacio;
        }

        public bool validar_Fecha(ref DateTime fechavalida, TextBox diat, TextBox mest, TextBox aniot)
        {
            bool esFechaValida = true;
            string dia, mes, anio, posibleFecha;
            if (diat.Text.Trim().Length == 1) dia = "0" + diat.Text;
            else dia = diat.Text;
            if (mest.Text.Trim().Length == 1) mes = "0" + mest.Text;
            else mes = mest.Text;
            anio = aniot.Text;
            posibleFecha = dia + "/" + mes + "/" + anio;
            if (DateTime.TryParse(posibleFecha, out fechavalida) == false)
            {
                MessageBox.Show("La fecha ingresada no es válida", "Fecha no válida", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                diat.Clear();
                mest.Clear();
                aniot.Clear();
                diat.Focus();
                esFechaValida = false;
            }
            return esFechaValida;
        }

        public void Limpiar_Todos_Los_Textbox(Form formu)
        {
            foreach (Control c in formu.Controls)
            {
                if (c is TextBox)
                    c.Text = "";
            }
        }

        public void Sacar_Ceros_Izquierda(ref string numero)
        {
            int pos = 0;
            int posUltimoCero = 0;
            if (numero[0] == '0')
            {
                foreach (char c in numero)
                {
                    if (c == 48) posUltimoCero = pos;
                    pos++;
                }
                numero = numero.Substring(posUltimoCero);
            }
        }

        public void Se_Modificaron_Controles(ref bool controlCambiado)
        {
            controlCambiado = true;
        }

        public void Llenar_Condiciones_Combos(ref ComboBox nombreCombo)
        {
            nombreCombo.Items.Add("Comienza con:");
            nombreCombo.Items.Add("Termina en:");
            nombreCombo.Items.Add("Contiene:");
            nombreCombo.Items.Add("Es igual a:");
        }

        public void ConstruirClausulaSQL(string NombreCampo,
                                  string Operador,
                                  string Valor,
                                  ref string Clausula)
        {
            string d1 = "";  //Delimitador 1
            string d2 = ""; //Delimitador 2
            if (Clausula == "")
                Clausula = Clausula + " WHERE ";
            else
                Clausula = Clausula + " AND ";
            switch (Operador)
            {
                case "Igual a:":
                    d1 = " = ";
                    d2 = "";
                    break;
                case "Mayor a:":
                    d1 = " > ";
                    d2 = "";
                    break;
                case "Menor a:":
                    d1 = " < ";
                    d2 = "";
                    break;
                case "Comienza con:":
                    d1 = " LIKE '";
                    d2 = "%'";
                    break;
                case "Termina en:":
                    d1 = " LIKE '%";
                    d2 = "'";
                    break;
                case "Contiene:":
                    d1 = " LIKE '%";
                    d2 = "%'";
                    break;
                case "Es igual a:":
                    d1 = " ='";
                    d2 = "'";
                    break;
            } // SWITCH
            Clausula =
                Clausula + NombreCampo + d1 + Valor + d2;
        } // CONSTRUIRCLAUSULA
    }
}
